﻿using System;
using System.Collections.Generic;
using System.Linq;

namespace HCMUS_SearchService_Group2
{
    /////////////////////////////////////////////////
    /// \brief Lớp Từ Khóa Phường DAO 
    /// \author Dương Văn Phong -   0912334.
    /// \details <h3>Cung cấp hàm lấy danh sách từ khóa phường với chuỗi tương ứng</h3>
    public class WardKeyWordDAO : KeyWordDAO, IKeyWordObjectDAO
    {
        /////////////////////////////////////////////////
        /// \brief Lấy DS WardKeyDTO
        /// \param[in] Không.
        /// \returns  List<WardKeyDTO>.
        /// \details <h3>Trả về danh sách tất cả các WardKeyDTO trong Database.</h3>
        /////////////////////////////////////////////////
        public static List<WardKeyDTO> GetAllDTOKeyWord()
        {
            List<WardKeyDTO> lstWardKey = new List<WardKeyDTO>();
            var lstResultKey = from data in DataConnectionHelper.Context.TUKHOAPHUONGs
                               select data;
            foreach (var obj in lstResultKey)
            {
                WardKeyDTO temp = new WardKeyDTO();
                if (null != obj.MaPhuong)
                    temp.WardID = (int)obj.MaPhuong;
                temp.WardKeyID = obj.MaTuKhoaPhuong;
                temp.WardKeyWord = obj.TuKhoaPhuong1;
                lstWardKey.Add(temp);
            }

            return lstWardKey;
        }
        /////////////////////////////////////////////////
        /// \brief Hàm Tìm danh sách từ khóa tỉnh thành với chuỗi tương ứng
        /// \param[in] string
        /// \returns List<KeyWordDTO>
        /// \details <h3>Các bước thực hiện:</h3>
        /////////////////////////////////////////////////
        public List<KeyWordDTO> Search(string strInput)
        {
            /// - Bước 1: Khởi tạo danh sách dữ liệu
            List<WardKeyDTO> listTuKhoaQuan = new List<WardKeyDTO>();
            List<KeyWordDTO> listTuKhoaQuanDTO = new List<KeyWordDTO>();

            if (null != strInput)
            {
                strInput = strInput.Replace(@"'", @"''");

                /// - Bước 2: Truy vấn CSDL theo chuỗi truyền vào
                listTuKhoaQuan = (
                    from emp in SearchHelper.WardKeys
                    where strInput.IndexOf(emp.WardKeyWord) != -1
                    select emp).ToList();

                /// - Bước 3: Chuyển đổi về kiểu dữ liệu tương ứng
                foreach (var tuKhoaDichVu in listTuKhoaQuan)
                {
                    /*WardKeyDTO wardKey = new WardKeyDTO();
                    wardKey.WardID = Convert.ToInt32(tuKhoaDichVu.MaQuanHuyen);
                    wardKey.WardKeyID = Convert.ToInt32(tuKhoaDichVu.MaTuKhoaQuanHuyen);
                    wardKey.WardKeyWord = tuKhoaDichVu.TuKhoaQuanHuyen1;*/
                    listTuKhoaQuanDTO.Add(tuKhoaDichVu);
                }
            }

            /// - Bước 4: return Kết quả
            return listTuKhoaQuanDTO;
        }
    }
}
